﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using fideeraSoft.Handlers;
using System.Drawing;
using fideeraSoft.Utils;
using fideeraSoft.Entities;


namespace fideeraSoft.Paneles
{
    class UsuarioPanelBaja : PanelGeneral
    {
        private DataGridView dgvUsuarioBaja;
        private TableLayoutPanel tlpBotones;
        private Button btBuscarUsuarioDNI;
        private Button btBuscarUsuarioUsername;
        private TableLayoutPanel tlpBuscarUsuarioUsername;
        private Button btVolver;
        private Button btEliminar;
        private TableLayoutPanel tlpBuscarUsuarioDNI;
        
        
        private TextBox tbBuscarUsuarioUsername;
        private TextBox tbBuscarUsuarioDNI;

        private int posicionDataGrid;
        private int posicionTablaBuscarUsuarioUsername;
        private int posicionTablaBotones;


        public UsuarioPanelBaja(Handler handler)
        {

            this.formatearPanelGeneral(handler);

            this.InitializeComponent();

            this.formatearTableTitulo("BAJA DE USUARIO");

            this.formatearTablaBuscarUsuarioDNI();
            this.formatearTablaBuscarUsuarioUsername();
            this.formatearDataGrid();

            this.formatearTablaBotones();

            this.Controls.Add(tlpBuscarUsuarioDNI);
            this.Controls.Add(tlpBuscarUsuarioUsername);
            
            this.Controls.Add(dgvUsuarioBaja);

            this.Controls.Add(tlpBotones);

        }

        private void formatearTablaBuscarUsuarioDNI()
        {
            tlpBuscarUsuarioDNI.Controls.Add(btBuscarUsuarioDNI);
            tlpBuscarUsuarioDNI.Controls.Add(tbBuscarUsuarioDNI);

            tlpBuscarUsuarioDNI.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            tlpBuscarUsuarioDNI.BackColor = Color.LightCyan;
            tlpBuscarUsuarioDNI.Size = new Size(400, tbBuscarUsuarioDNI.Size.Height + 9);

            tlpBuscarUsuarioDNI.Location = new Point(MetodosGenerales.calcularCenterWidth(this.Size.Width, this.tlpBuscarUsuarioDNI.Size.Width), this.InitialRealPointVertical);
            
            
        }
        private void formatearTablaBuscarUsuarioUsername()
        {
            tlpBuscarUsuarioUsername.Controls.Add(btBuscarUsuarioUsername);
            tlpBuscarUsuarioUsername.Controls.Add(tbBuscarUsuarioUsername);


            posicionTablaBuscarUsuarioUsername = this.InitialRealPointVertical+tlpBuscarUsuarioDNI.Size.Height;
            tlpBuscarUsuarioUsername.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            tlpBuscarUsuarioUsername.BackColor = Color.LightCyan;
            tlpBuscarUsuarioUsername.Size = new Size(400, tbBuscarUsuarioUsername.Size.Height + 9);
            tlpBuscarUsuarioUsername.Location = new Point(MetodosGenerales.calcularCenterWidth(this.Size.Width, this.tlpBuscarUsuarioUsername.Size.Width), posicionTablaBuscarUsuarioUsername);

        }

        private void formatearDataGrid()
        {

            posicionDataGrid = posicionTablaBuscarUsuarioUsername+ 60;

            dgvUsuarioBaja.AutoGenerateColumns = true;
            dgvUsuarioBaja.Size = new Size(this.Size.Width - 100, 100);
            dgvUsuarioBaja.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.Fill);
            dgvUsuarioBaja.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllHeaders);
            dgvUsuarioBaja.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dgvUsuarioBaja.BorderStyle = BorderStyle.Fixed3D;

            dgvUsuarioBaja.Location = new Point(MetodosGenerales.calcularCenterWidth(this.Size.Width, dgvUsuarioBaja.Size.Width), posicionDataGrid);
        }

        private void formatearTablaBotones()
        {
            tlpBotones.Controls.Add(btVolver);
            tlpBotones.Controls.Add(btEliminar);

            posicionTablaBotones = posicionDataGrid + dgvUsuarioBaja.Size.Height + 40;
            tlpBotones.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            tlpBotones.BackColor = Color.LightCyan;
            //tlpBotones.Size = new Size(400, tbBuscarProvCuil.Size.Height + 9);
            tlpBotones.Location = new Point(MetodosGenerales.calcularCenterWidth(this.Size.Width, this.tlpBotones.Size.Width), posicionTablaBotones);

        }

        private void InitializeComponent()
        {
            this.dgvUsuarioBaja = new System.Windows.Forms.DataGridView();
            this.tlpBotones = new System.Windows.Forms.TableLayoutPanel();
            this.btBuscarUsuarioDNI = new System.Windows.Forms.Button();
            this.btBuscarUsuarioUsername = new System.Windows.Forms.Button();
            this.tlpBuscarUsuarioUsername = new System.Windows.Forms.TableLayoutPanel();
            this.btVolver = new System.Windows.Forms.Button();
            this.btEliminar = new System.Windows.Forms.Button();
            this.tlpBuscarUsuarioDNI = new System.Windows.Forms.TableLayoutPanel();
            this.tbBuscarUsuarioUsername = new System.Windows.Forms.TextBox();
            this.tbBuscarUsuarioDNI = new System.Windows.Forms.TextBox();
            ((System.ComponentModel.ISupportInitialize)(this.dgvUsuarioBaja)).BeginInit();
            this.SuspendLayout();
            // 
            // dgvUsuarioBaja
            // 
            this.dgvUsuarioBaja.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dgvUsuarioBaja.Location = new System.Drawing.Point(0, 0);
            this.dgvUsuarioBaja.Name = "dgvUsuarioBaja";
            this.dgvUsuarioBaja.ReadOnly = true;
            this.dgvUsuarioBaja.Size = new System.Drawing.Size(240, 150);
            this.dgvUsuarioBaja.TabIndex = 0;
            // 
            // tlpBotones
            // 
            this.tlpBotones.AutoSize = true;
            this.tlpBotones.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
            this.tlpBotones.ColumnCount = 2;
            this.tlpBotones.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.Location = new System.Drawing.Point(0, 0);
            this.tlpBotones.Name = "tlpBotones";
            this.tlpBotones.RowCount = 1;
            this.tlpBotones.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.Size = new System.Drawing.Size(200, 100);
            this.tlpBotones.TabIndex = 0;
            // 
            // btBuscarUsuarioDNI
            // 
            this.btBuscarUsuarioDNI.BackColor = System.Drawing.Color.AliceBlue;
            this.btBuscarUsuarioDNI.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btBuscarUsuarioDNI.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btBuscarUsuarioDNI.Location = new System.Drawing.Point(0, 0);
            this.btBuscarUsuarioDNI.Name = "btBuscarUsuarioDNI";
            this.btBuscarUsuarioDNI.Size = new System.Drawing.Size(75, 23);
            this.btBuscarUsuarioDNI.TabIndex = 0;
            this.btBuscarUsuarioDNI.Text = "Buscar Usuario (DNI)";
            this.btBuscarUsuarioDNI.UseVisualStyleBackColor = false;
            this.btBuscarUsuarioDNI.Click += new System.EventHandler(this.btBuscarUsuarioDNI_Click);
            // 
            // btBuscarUsuarioUsername
            // 
            this.btBuscarUsuarioUsername.BackColor = System.Drawing.Color.AliceBlue;
            this.btBuscarUsuarioUsername.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btBuscarUsuarioUsername.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btBuscarUsuarioUsername.Location = new System.Drawing.Point(0, 0);
            this.btBuscarUsuarioUsername.Name = "btBuscarUsuarioUsername";
            this.btBuscarUsuarioUsername.Size = new System.Drawing.Size(75, 23);
            this.btBuscarUsuarioUsername.TabIndex = 0;
            this.btBuscarUsuarioUsername.Text = "Buscar Usuario (Username)";
            this.btBuscarUsuarioUsername.UseVisualStyleBackColor = false;
            this.btBuscarUsuarioUsername.Click += new System.EventHandler(this.btBuscarUsuarioUsername_Click);
            // 
            // tlpBuscarUsuarioUsername
            // 
            this.tlpBuscarUsuarioUsername.ColumnCount = 2;
            this.tlpBuscarUsuarioUsername.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioUsername.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioUsername.Location = new System.Drawing.Point(0, 0);
            this.tlpBuscarUsuarioUsername.Name = "tlpBuscarUsuarioUsername";
            this.tlpBuscarUsuarioUsername.RowCount = 1;
            this.tlpBuscarUsuarioUsername.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioUsername.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioUsername.Size = new System.Drawing.Size(400, 30);
            this.tlpBuscarUsuarioUsername.TabIndex = 0;
            // 
            // btVolver
            // 
            this.btVolver.BackColor = System.Drawing.Color.AliceBlue;
            this.btVolver.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btVolver.Location = new System.Drawing.Point(0, 0);
            this.btVolver.Name = "btVolver";
            this.btVolver.RightToLeft = System.Windows.Forms.RightToLeft.No;
            this.btVolver.Size = new System.Drawing.Size(85, 40);
            this.btVolver.TabIndex = 0;
            this.btVolver.Text = "Volver";
            this.btVolver.UseVisualStyleBackColor = false;
            this.btVolver.Click += new System.EventHandler(this.btVolver_Click);
            // 
            // btEliminar
            // 
            this.btEliminar.BackColor = System.Drawing.Color.AliceBlue;
            this.btEliminar.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btEliminar.Location = new System.Drawing.Point(0, 0);
            this.btEliminar.Name = "btEliminar";
            this.btEliminar.Size = new System.Drawing.Size(85, 40);
            this.btEliminar.TabIndex = 0;
            this.btEliminar.Text = "Eliminar";
            this.btEliminar.UseVisualStyleBackColor = false;
            this.btEliminar.Click += new System.EventHandler(this.btEliminar_Click);
            // 
            // tlpBuscarUsuarioDNI
            // 
            this.tlpBuscarUsuarioDNI.ColumnCount = 2;
            this.tlpBuscarUsuarioDNI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioDNI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioDNI.Location = new System.Drawing.Point(0, 0);
            this.tlpBuscarUsuarioDNI.Name = "tlpBuscarUsuarioDNI";
            this.tlpBuscarUsuarioDNI.RowCount = 1;
            this.tlpBuscarUsuarioDNI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioDNI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBuscarUsuarioDNI.Size = new System.Drawing.Size(400, 30);
            this.tlpBuscarUsuarioDNI.TabIndex = 0;
            // 
            // tbBuscarUsuarioUsername
            // 
            this.tbBuscarUsuarioUsername.Font = new System.Drawing.Font("Bodoni MT", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.tbBuscarUsuarioUsername.Location = new System.Drawing.Point(0, 0);
            this.tbBuscarUsuarioUsername.MaxLength = 50;
            this.tbBuscarUsuarioUsername.Name = "tbBuscarUsuarioUsername";
            this.tbBuscarUsuarioUsername.Size = new System.Drawing.Size(200, 30);
            this.tbBuscarUsuarioUsername.TabIndex = 0;
            // 
            // tbBuscarUsuarioDNI
            // 
            this.tbBuscarUsuarioDNI.Font = new System.Drawing.Font("Bodoni MT", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.tbBuscarUsuarioDNI.Location = new System.Drawing.Point(0, 0);
            this.tbBuscarUsuarioDNI.MaxLength = 8;
            this.tbBuscarUsuarioDNI.Name = "tbBuscarUsuarioDNI";
            this.tbBuscarUsuarioDNI.Size = new System.Drawing.Size(140, 30);
            this.tbBuscarUsuarioDNI.TabIndex = 0;
            ((System.ComponentModel.ISupportInitialize)(this.dgvUsuarioBaja)).EndInit();
            this.ResumeLayout(false);

        }

        private void btVolver_Click(object sender, EventArgs e)
        {
            this.handler.backToPrincipal();
        }

        private void btEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if ((dgvUsuarioBaja != null) && (dgvUsuarioBaja.Rows.Count != 0))
                {
                    int indx = dgvUsuarioBaja.CurrentCell.RowIndex;

                    string strDataId = dgvUsuarioBaja[0, indx].Value.ToString();
                    string strDataName = dgvUsuarioBaja[1, indx].Value.ToString();
                    string strDataApellido = dgvUsuarioBaja[2, indx].Value.ToString();

                    DialogResult res = MessageBox.Show("Seguro quiere eliminar al usuario '" + strDataName + " "+strDataApellido + "' - ID: " + strDataId, "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (res == DialogResult.Yes)
                    {
                        this.handler.eliminarUsuarioPorId(Convert.ToInt32(strDataId));
                        MessageBox.Show("Usuario eliminado correctamente", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        tbBuscarUsuarioDNI.Clear();
                        tbBuscarUsuarioUsername.Clear();

                        if (this.dgvUsuarioBaja.DataSource != null)
                        {
                            this.dgvUsuarioBaja.DataSource = null;
                        }
                        else
                        {
                            //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[e.RowIndex]);
                            //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[0]);
                            this.dgvUsuarioBaja.Rows.Clear();
                        }
                        this.dgvUsuarioBaja.Refresh();
                    }
                    else
                    {

                    }
                }
                else
                {
                    MessageBox.Show("No hay ningún Usuario en la lista", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            catch (MiException exc)
            {
                MessageBox.Show("No se pudo eliminar Usuario", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                CLogger.Append("[btBuscarProvRazon_Click] Exception: " + exc, CLogger.ERROR);      //DEBUG
            }
        }

        private void btBuscarUsuarioDNI_Click(object sender, EventArgs e)
        {
            dgvUsuarioBaja.ClearSelection();
            if (this.dgvUsuarioBaja.DataSource != null)
            {
                this.dgvUsuarioBaja.DataSource = null;
            }
            else
            {
                //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[e.RowIndex]);
                //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[0]);
                this.dgvUsuarioBaja.Rows.Clear();
            }
            dgvUsuarioBaja.Refresh();

            if (!string.IsNullOrEmpty(tbBuscarUsuarioDNI.Text))
            {
                if (tbBuscarUsuarioDNI.Text.Length == 8)
                {
                    try
                    {
                        Usuario usuario = handler.buscarUsuarioPorDNI(tbBuscarUsuarioDNI.Text);
                        if (usuario != null)
                        {
                            List<Usuario> lstUsuario = new List<Usuario>();
                            lstUsuario.Add(usuario);

                            dgvUsuarioBaja.DataSource = lstUsuario;
                            //   MessageBox.Show("CARGA DE PROVEEDOR ENCONTRADO", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //DEBUG
                            dgvUsuarioBaja.EndEdit();
                            dgvUsuarioBaja.Refresh();

                        }
                        else
                        {
                            MessageBox.Show("NO SE ENCONTRO EL USUARIO", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    catch (MiException exc)
                    {
                        //MessageBox.Show(exc.Message);     //DEBUG
                        CLogger.Append("[btBuscarUsuarioDNI_Click] Exception: " + exc, CLogger.ERROR);      //DEBUG
                    }                    
                }
                else
                {
                    MessageBox.Show("NO SE INGRESO NINGÚN NUMERO DE DNI \nÓ LA CANTIDAD DE DIGITOS ES INCORRECTA", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                tbBuscarUsuarioDNI.Clear();
            }
            else
            {
                MessageBox.Show("NO SE INGRESO NINGÚN NUMERO DE DNI \nÓ LA CANTIDAD DE DIGITOS ES INCORRECTA", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            
        }

        private void btBuscarUsuarioUsername_Click(object sender, EventArgs e)
        {
            dgvUsuarioBaja.ClearSelection();
            if (this.dgvUsuarioBaja.DataSource != null)
            {
                this.dgvUsuarioBaja.DataSource = null;
            }
            else
            {
                //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[e.RowIndex]);
                //dgvProveedorBaja.Rows.Remove(dgvProveedorBaja.Rows[0]);
                this.dgvUsuarioBaja.Rows.Clear();
            }
            dgvUsuarioBaja.Refresh();

            if (!string.IsNullOrEmpty(tbBuscarUsuarioUsername.Text))
            {                
                    try
                    {
                        Usuario usuario = handler.buscarUsuarioPorUserName(tbBuscarUsuarioUsername.Text);
                        if (usuario != null)
                        {
                            List<Usuario> lstUsuario = new List<Usuario>();
                            lstUsuario.Add(usuario);

                            dgvUsuarioBaja.DataSource = lstUsuario;
                            //   MessageBox.Show("CARGA DE PROVEEDOR ENCONTRADO", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //DEBUG
                            dgvUsuarioBaja.EndEdit();
                            dgvUsuarioBaja.Refresh();

                        }
                        else
                        {
                            MessageBox.Show("NO SE ENCONTRO EL USUARIO", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    catch (MiException exc)
                    {
                        //MessageBox.Show(exc.Message);     //DEBUG
                        CLogger.Append("[btBuscarUsuarioUsername_Click] Exception: " + exc, CLogger.ERROR);      //DEBUG
                    }             
                   tbBuscarUsuarioUsername.Clear();
            }
            else
            {
                MessageBox.Show("NO SE INGRESO NINGÚN NOMBRE DE USUARIO \nÓ LA CANTIDAD DE DIGITOS ES INCORRECTA", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
                

    }
}
